package com.edushare.common.vo.auto;

import java.util.Date;
import java.util.List;

import org.apache.cayenne.CayenneDataObject;

import com.edushare.common.vo.AcademicYearModel;
import com.edushare.common.vo.Assignments;
import com.edushare.common.vo.Attendance;
import com.edushare.common.vo.AttendanceRegister;
import com.edushare.common.vo.CourseGrade;
import com.edushare.common.vo.Courses;
import com.edushare.common.vo.Enrolments;
import com.edushare.common.vo.GradingItem;

/**
 * Class _CourseInstances was generated by Cayenne.
 * It is probably a good idea to avoid changing this class manually,
 * since it may be overwritten next time code is regenerated.
 * If you need to make any customizations, please use subclass.
 */
public abstract class _CourseInstances extends CayenneDataObject {

    public static final String COURSE_INSTANCE_ID_PROPERTY = "courseInstanceId";
    public static final String CREATION_TIMESTAMP_PROPERTY = "creationTimestamp";
    public static final String DESCRIPTION_PROPERTY = "description";
    public static final String INSTANCE_CREDITS_PROPERTY = "instanceCredits";
    public static final String INSTANCE_YEAR_PROPERTY = "instanceYear";
    public static final String SETTINGS_PROPERTY = "settings";
    public static final String STATUS_PROPERTY = "status";
    public static final String ENROLMENT_LIST_PROPERTY = "EnrolmentList";
    public static final String ASSIGNMENTS_PROPERTY = "assignments";
    public static final String ATTENDANCE_REGISTER_PROPERTY = "attendanceRegister";
    public static final String COURSE_PROPERTY = "course";
    public static final String COURSE_ATTENDACE_PROPERTY = "courseAttendace";
    public static final String COURSE_GRADES_PROPERTY = "courseGrades";
    public static final String GRADING_ITEMS_PROPERTY = "gradingItems";
    public static final String SEMESTER_PROPERTY = "semester";

    public static final String COURSE_INSTANCE_ID_PK_COLUMN = "COURSE_INSTANCE_ID";

    public void setCourseInstanceId(Integer courseInstanceId) {
        writeProperty("courseInstanceId", courseInstanceId);
    }
    public Integer getCourseInstanceId() {
        return (Integer)readProperty("courseInstanceId");
    }

    public void setCreationTimestamp(Date creationTimestamp) {
        writeProperty("creationTimestamp", creationTimestamp);
    }
    public Date getCreationTimestamp() {
        return (Date)readProperty("creationTimestamp");
    }

    public void setDescription(String description) {
        writeProperty("description", description);
    }
    public String getDescription() {
        return (String)readProperty("description");
    }

    public void setInstanceCredits(Integer instanceCredits) {
        writeProperty("instanceCredits", instanceCredits);
    }
    public Integer getInstanceCredits() {
        return (Integer)readProperty("instanceCredits");
    }

    public void setInstanceYear(Integer instanceYear) {
        writeProperty("instanceYear", instanceYear);
    }
    public Integer getInstanceYear() {
        return (Integer)readProperty("instanceYear");
    }

    public void setSettings(String settings) {
        writeProperty("settings", settings);
    }
    public String getSettings() {
        return (String)readProperty("settings");
    }

    public void setStatus(Integer status) {
        writeProperty("status", status);
    }
    public Integer getStatus() {
        return (Integer)readProperty("status");
    }

    public void addToEnrolmentList(Enrolments obj) {
        addToManyTarget("EnrolmentList", obj, true);
    }
    public void removeFromEnrolmentList(Enrolments obj) {
        removeToManyTarget("EnrolmentList", obj, true);
    }
    @SuppressWarnings("unchecked")
    public List<Enrolments> getEnrolmentList() {
        return (List<Enrolments>)readProperty("EnrolmentList");
    }


    public void addToAssignments(Assignments obj) {
        addToManyTarget("assignments", obj, true);
    }
    public void removeFromAssignments(Assignments obj) {
        removeToManyTarget("assignments", obj, true);
    }
    @SuppressWarnings("unchecked")
    public List<Assignments> getAssignments() {
        return (List<Assignments>)readProperty("assignments");
    }


    public void addToAttendanceRegister(AttendanceRegister obj) {
        addToManyTarget("attendanceRegister", obj, true);
    }
    public void removeFromAttendanceRegister(AttendanceRegister obj) {
        removeToManyTarget("attendanceRegister", obj, true);
    }
    @SuppressWarnings("unchecked")
    public List<AttendanceRegister> getAttendanceRegister() {
        return (List<AttendanceRegister>)readProperty("attendanceRegister");
    }


    public void setCourse(Courses course) {
        setToOneTarget("course", course, true);
    }

    public Courses getCourse() {
        return (Courses)readProperty("course");
    }


    public void addToCourseAttendace(Attendance obj) {
        addToManyTarget("courseAttendace", obj, true);
    }
    public void removeFromCourseAttendace(Attendance obj) {
        removeToManyTarget("courseAttendace", obj, true);
    }
    @SuppressWarnings("unchecked")
    public List<Attendance> getCourseAttendace() {
        return (List<Attendance>)readProperty("courseAttendace");
    }


    public void addToCourseGrades(CourseGrade obj) {
        addToManyTarget("courseGrades", obj, true);
    }
    public void removeFromCourseGrades(CourseGrade obj) {
        removeToManyTarget("courseGrades", obj, true);
    }
    @SuppressWarnings("unchecked")
    public List<CourseGrade> getCourseGrades() {
        return (List<CourseGrade>)readProperty("courseGrades");
    }


    public void addToGradingItems(GradingItem obj) {
        addToManyTarget("gradingItems", obj, true);
    }
    public void removeFromGradingItems(GradingItem obj) {
        removeToManyTarget("gradingItems", obj, true);
    }
    @SuppressWarnings("unchecked")
    public List<GradingItem> getGradingItems() {
        return (List<GradingItem>)readProperty("gradingItems");
    }


    public void setSemester(AcademicYearModel semester) {
        setToOneTarget("semester", semester, true);
    }

    public AcademicYearModel getSemester() {
        return (AcademicYearModel)readProperty("semester");
    }


}
